/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucue.ptc.gco.mdl;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;

/**
 *
 * @author WILSON
 */

@Entity
@Table(name="pedido")
public class Pedido implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int idPedido;
   
    @Temporal(javax.persistence.TemporalType.DATE)
    @Column
    private Date fechaIngreso;
    
    @Temporal(javax.persistence.TemporalType.DATE)
    @Column
    private Date fechaEntrega;
    
    @Column
    private double subtotal;
    
    @Column
    private double iva;
    
    @Column
    private double total;

    @Column
    private double estado;
    
    @ManyToOne(optional = false)
    @JoinColumn(name="idEmpleado", referencedColumnName = "idPersona")
    private Empleado empleado;
    
    
    @ManyToOne(optional = false)
    @JoinColumn(name="idPersona", referencedColumnName = "idPersona")
    private Cliente cliente;

    
    @OneToOne(mappedBy="pedido",cascade= CascadeType.ALL)
    private Visita visita;    
    
    @OneToMany(mappedBy="pedido",cascade= CascadeType.ALL)
    private List<DetallePedido> detalle;
    
    
    @ManyToOne(optional = false)
    @JoinColumn(name="idDireccion", referencedColumnName = "idDireccion")
    private Direccion direccion;
     
    ///////////////////////////////////////////////////////////////
    public Visita getVisita() {
        return visita;
    }

    public void setVisita(Visita visita) {
        this.visita = visita;
    }
    
    public List<DetallePedido> getDetalle() {
        return detalle;
    }

    
    public void setDetalle(List<DetallePedido> detalle) {
        this.detalle = detalle;
    }

      
    public Direccion getDireccion() {
      return direccion;
    }

    public void setDireccion(Direccion direccion) {
        this.direccion = direccion;
    }
////

    public int getIdPedido() {
        return idPedido;
    }

    public void setIdPedido(int idPedido) {
        this.idPedido = idPedido;
    }


    /**
     * @return the cliente
     */
    public Cliente getCliente() {
        return cliente;
    }

    /**
     * @param cliente the cliente to set
     */
    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    /**
     * @return the fechaIngreso
     */
    public Date getFechaIngreso() {
        return fechaIngreso;
    }

    /**
     * @param fechaIngreso the fechaIngreso to set
     */
    public void setFechaIngreso(Date fechaIngreso) {
        this.fechaIngreso = fechaIngreso;
    }

  
    /**
     * @return the subtotal
     */
    public double getSubtotal() {
        return subtotal;
    }

    /**
     * @param subtotal the subtotal to set
     */
    public void setSubtotal(double subtotal) {
        this.subtotal = subtotal;
    }

    /**
     * @return the iva
     */
    public double getIva() {
        return iva;
    }

    /**
     * @param iva the iva to set
     */
    public void setIva(double iva) {
        this.iva = iva;
    }

    /**
     * @return the total
     */
    public double getTotal() {
        return total;
    }

    /**
     * @param total the total to set
     */
    public void setTotal(double total) {
        this.total = total;
    }

    /**
     * @return the detalle
     */

    public Date getFechaEntrega() {
        return fechaEntrega;
    }

    public void setFechaEntrega(Date fechaEntrega) {
        this.fechaEntrega = fechaEntrega;
    }

    public double getEstado() {
        return estado;
    }

    public void setEstado(double estado) {
        this.estado = estado;
    }

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 67 * hash + this.idPedido;
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Pedido other = (Pedido) obj;
        if (this.idPedido != other.idPedido) {
            return false;
        }
        return true;
    }

    public Empleado getEmpleado() {
        return empleado;
    }

    public void setEmpleado(Empleado empleado) {
        this.empleado = empleado;
    }   

}
